﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SisVenda.Web.Restrito.Fn;
using SisVenda.Web.messageBox;
using SisVenda.Web.Code;
using System.Data;

namespace SisVenda.Web.Restrito
{
    public partial class EntradaProduto : System.Web.UI.Page
    {
        CompraFn compraFn = new CompraFn();
        protected void Page_Load(object sender, EventArgs e)
        {
            MessageBox.Include(this);
        }

        protected void btnPesquisar_Click(object sender, EventArgs e)
        {
            gvwListagem.DataBind();
        }

        protected void gvwListagem_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (fvwCompra.CurrentMode != FormViewMode.ReadOnly)
                fvwCompra.ChangeMode(FormViewMode.ReadOnly);
            fvwCompra.DataBind();
        }

        protected void odsFormViewCompra_Updated(object sender, ObjectDataSourceStatusEventArgs e)
        {
            gvwListagem.DataBind();
        }

        protected void odsFormViewCompra_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
        {
            gvwListagem.DataBind();
        }

        protected void odsFormViewCompra_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
        {
            gvwListagem.DataBind();
        }

        protected void gvwListagem_DataBinding(object sender, EventArgs e)
        {
            gvwListagem.PageSize = Convert.ToInt16(ddlNumeroLinhasGrid.SelectedValue);
        }

        protected void ddlNumeroLinhasGrid_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwListagem.DataBind();
        }

        protected void odsFormViewCompra_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
        {
            if (gvwListagem.SelectedDataKey != null)
            {
                e.InputParameters["idCompra"] = gvwListagem.SelectedDataKey.Value;
            }
        }

        protected void odsItemCompraItem_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
        {
            GridView gv = (GridView)fvwCompra.FindControl("gvwItemCompra");
            if (gvwListagem.SelectedDataKey != null)
            {
                e.InputParameters["idCompra"] = gvwListagem.SelectedDataKey.Value;
            }

            gv.Dispose();
        }

        protected void odsGridViewCompra_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
        {
            e.InputParameters["tipoConsulta"] = rblFornecedor.SelectedValue;
            if (tbxDescricao.Text != "")
            {
                e.InputParameters["parametroPesquisa"] = tbxDescricao.Text;
            }
        }

        protected void btnIncluirItemInsert_Click(object sender, EventArgs e)
        {
            RequiredFieldValidator rfvCodigoProdutoInsert = (RequiredFieldValidator)fvwCompra.FindControl("rfvCodigoProdutoInsert");
            rfvCodigoProdutoInsert.Validate();
            RequiredFieldValidator rfvQuantidadeInsert = (RequiredFieldValidator)fvwCompra.FindControl("rfvQuantidadeInsert");
            rfvQuantidadeInsert.Validate();
            RequiredFieldValidator rfvPrecoInsert = (RequiredFieldValidator)fvwCompra.FindControl("rfvPrecoInsert");
            rfvPrecoInsert.Validate();

            if (rfvCodigoProdutoInsert.IsValid && rfvQuantidadeInsert.IsValid && rfvPrecoInsert.IsValid)
            {
                TextBox tbxCodigoProduto = (TextBox)fvwCompra.FindControl("tbxCodigoProdutoInsert");
                TextBox tbxCodigoCompra = (TextBox)fvwCompra.FindControl("tbxCodigoInsert");
                TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeInsert");
                TextBox tbxPreco = (TextBox)fvwCompra.FindControl("tbxPrecoInsert");
                TextBox tbxProduto = (TextBox)fvwCompra.FindControl("tbxDescricaoProdutoInsert");
                TextBox tbxUnidade = (TextBox)fvwCompra.FindControl("tbxUnidadeInsert");
                TextBox tbxValor = (TextBox)fvwCompra.FindControl("tbxValorTotalInsert");
                TextBox tbxValorTotalCompra = (TextBox)fvwCompra.FindControl("tbxValorTotalCompraInsert");
                GridView gvwItemProduto = (GridView)fvwCompra.FindControl("gvwItemCompraInsert");

                Int32 codigoProduto = Convert.ToInt32(tbxCodigoProduto.Text);
                Int32 codigoCompra = Convert.ToInt32(tbxCodigoCompra.Text);
                Int32 quantidade = Convert.ToInt32(tbxQuantidade.Text);
                Decimal preco = Convert.ToDecimal(tbxPreco.Text);

                Int32 sucesso = compraFn.InserirItemCompra(codigoProduto, codigoCompra, quantidade, preco);

                if (sucesso != -1)
                {
                    tbxCodigoProduto.Text = String.Empty;
                    tbxQuantidade.Text = String.Empty;
                    tbxPreco.Text = String.Empty;
                    tbxProduto.Text = String.Empty;
                    tbxUnidade.Text = String.Empty;
                    tbxValor.Text = String.Empty;

                    DataTable dt = new DataTable();
                    dt = compraFn.ObterValorTotalCompra(Convert.ToInt32(tbxCodigoCompra.Text));

                    tbxValorTotalCompra.Text = dt.Rows[0]["Valor"].ToString();
                }

                gvwItemProduto.DataBind();
                tbxCodigoCompra.Dispose();
                tbxCodigoProduto.Dispose();
                tbxQuantidade.Dispose();
                tbxPreco.Dispose();
                tbxProduto.Dispose();
                tbxUnidade.Dispose();
                tbxValor.Dispose();
                gvwItemProduto.Dispose();
                tbxValorTotalCompra.Dispose();
            }

        }

        protected void btnInserirCompraInsert_Click(object sender, EventArgs e)
        {
            RequiredFieldValidator rfvNumeroNotaPedido = (RequiredFieldValidator)fvwCompra.FindControl("rfvNumeroNotaPedidoInsert");
            rfvNumeroNotaPedido.Validate();
            RequiredFieldValidator rfvCnpjFornecedorInsert = (RequiredFieldValidator)fvwCompra.FindControl("rfvCnpjFornecedorInsert");
            rfvCnpjFornecedorInsert.Validate();
            RequiredFieldValidator rfvDataInsert = (RequiredFieldValidator)fvwCompra.FindControl("rfvDataInsert");
            rfvDataInsert.Validate();

            if (rfvCnpjFornecedorInsert.IsValid && rfvNumeroNotaPedido.IsValid && rfvDataInsert.IsValid)
            {

                Panel pnlItemCompra = (Panel)fvwCompra.FindControl("pnlItemCompra");
                Button btnFinalizarCompra = (Button)fvwCompra.FindControl("btnFinalizarInsert");
                Button btnInserir = (Button)fvwCompra.FindControl("btnInserirCompraInsert");
                Button btnCancelarCompra = (Button)fvwCompra.FindControl("btnCancelarCompraInsert");
                TextBox tbxCnpj = (TextBox)fvwCompra.FindControl("tbxCnpjFornecedorInsert");
                TextBox tbxFornecedor = (TextBox)fvwCompra.FindControl("tbxFornecedorInsert");
                TextBox tbxPedidoNota = (TextBox)fvwCompra.FindControl("tbxNumeroNotaPedidoInsert");
                TextBox tbxDataCompra = (TextBox)fvwCompra.FindControl("tbxDataInsert");
                TextBox tbxCodigo = (TextBox)fvwCompra.FindControl("tbxCodigoInsert");

                pnlItemCompra.Visible = true;
                btnFinalizarCompra.Visible = true;
                btnInserir.Visible = false;
                btnCancelarCompra.Visible = false;
                tbxCnpj.Enabled = false;
                tbxFornecedor.Enabled = false;
                tbxPedidoNota.Enabled = false;
                tbxDataCompra.Enabled = false;


                Int32 codigoCompra = compraFn.InserirCompra(compraFn.obterIdFornecedor(tbxCnpj.Text), Convert.ToInt32(tbxPedidoNota.Text), Convert.ToDateTime(tbxDataCompra.Text));
                if (codigoCompra != -1)
                {
                    tbxCodigo.Text = Convert.ToString(codigoCompra);
                }
                pnlItemCompra.Dispose();
                btnInserir.Dispose();
                tbxCnpj.Dispose();
                tbxFornecedor.Dispose();
                tbxPedidoNota.Dispose();
                tbxDataCompra.Dispose();
                tbxCodigo.Dispose();
            }
        }

        protected void tbxCnpjFornecedorInsertEvent(object sender, EventArgs e)
        {
            TextBox tbxCnpj = (TextBox)fvwCompra.FindControl("tbxCnpjFornecedorInsert");
            TextBox tbxFornecedor = (TextBox)fvwCompra.FindControl("tbxFornecedorInsert");

            if (!tbxCnpj.Text.Equals(""))
            {
                String Fornecedor = Convert.ToString(compraFn.obterNomeFornecedor(tbxCnpj.Text));
                if (Fornecedor != null)
                    tbxFornecedor.Text = Fornecedor;
                else
                {
                    MessageBox.Show("CNPJ " + tbxCnpj.Text + " Invalido!!!", MessageBox.MessageType.Warning);
                    tbxCnpj.Text = String.Empty;
                    tbxFornecedor.Text = String.Empty;
                }
            }
            else
                tbxFornecedor.Text = String.Empty;
            tbxFornecedor.Dispose();
            tbxCnpj.Dispose();
        }

        protected void odsFormViewCompra_Deleting(object sender, ObjectDataSourceMethodEventArgs e)
        {
            Label id_Compra = (Label)fvwCompra.FindControl("lblCodigoCompraItem");
            if (gvwListagem.SelectedDataKey != null)
                e.InputParameters["idCompra"] = gvwListagem.SelectedDataKey.Value;
            else
                e.InputParameters["idCompra"] = id_Compra.Text;

            id_Compra.Dispose();
        }

        protected void tbxCodigoProdutoInsert_TextChanged(object sender, EventArgs e)
        {
            TextBox tbxCodProduto = (TextBox)fvwCompra.FindControl("tbxCodigoProdutoInsert");
            TextBox tbxDescProduto = (TextBox)fvwCompra.FindControl("tbxDescricaoProdutoInsert");
            TextBox tbxUnidade = (TextBox)fvwCompra.FindControl("tbxUnidadeInsert");
            TextBox tbxCnpj = (TextBox)fvwCompra.FindControl("tbxCnpjFornecedorInsert");

            if (!tbxCodProduto.Text.Equals(String.Empty))
            {
                DataTable dt = new DataTable();
                CompraFn compraFn = new CompraFn();
                dt = compraFn.ObterProduto(Convert.ToInt32(tbxCodProduto.Text), compraFn.obterIdFornecedor(tbxCnpj.Text));

                if (dt.Rows.Count != 0)
                {
                    tbxDescProduto.Text = dt.Rows[0]["Descricao"].ToString();
                    tbxUnidade.Text = dt.Rows[0]["Unidade"].ToString();
                    //TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeInsert");
                    //tbxQuantidade.Focus();
                    //tbxQuantidade.Dispose();
                }
                else
                {
                    tbxDescProduto.Text = String.Empty;
                    tbxUnidade.Text = string.Empty;
                    MessageBox.Show("Código de produto " + tbxCodProduto.Text + " invalido!", MessageBox.MessageType.Warning);
                    tbxCodProduto.Text = String.Empty;
                }
            }
            else
            {
                tbxDescProduto.Text = String.Empty;
                tbxUnidade.Text = String.Empty;
            }
        }

        protected void tbxQuantidadeInsert_TextChanged(object sender, EventArgs e)
        {
            TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeInsert");
            TextBox tbxPreco = (TextBox)fvwCompra.FindControl("tbxPrecoInsert");
            TextBox tbxValorTotal = (TextBox)fvwCompra.FindControl("tbxValorTotalInsert");
            if (!tbxQuantidade.Text.Equals(string.Empty) && !tbxPreco.Text.Equals(string.Empty) && !tbxQuantidade.Text.Contains("_") && !tbxPreco.Text.Contains("_"))
            {

                tbxValorTotal.Text = Convert.ToString(Multiplicar(Convert.ToInt32(tbxQuantidade.Text), Convert.ToDecimal(tbxPreco.Text)));
                //tbxPreco.Focus();
            }
            else
            {
                tbxValorTotal.Text = String.Empty;
            }

            //tbxQuantidade.Dispose();
            //tbxPreco.Dispose();
            //tbxValorTotal.Dispose();
        }

        protected Decimal Multiplicar(Int32 multiplicador, Decimal multiplicando)
        {
            return multiplicador * multiplicando;
        }

        protected void tbxPrecoInsert_TextChanged(object sender, EventArgs e)
        {
            TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeInsert");
            TextBox tbxPreco = (TextBox)fvwCompra.FindControl("tbxPrecoInsert");
            TextBox tbxValorTotal = (TextBox)fvwCompra.FindControl("tbxValorTotalInsert");
            if (!tbxQuantidade.Text.Equals(string.Empty) && !tbxPreco.Text.Equals(string.Empty) && !tbxQuantidade.Text.Contains("_") && !tbxPreco.Text.Contains("_"))
            {
                tbxValorTotal.Text = Convert.ToString(Multiplicar(Convert.ToInt32(tbxQuantidade.Text), Convert.ToDecimal(tbxPreco.Text)));
                //Button btnInserirItem = (Button)fvwCompra.FindControl("btnIncluirItemInsert");
                //btnInserirItem.Focus();
                //btnInserirItem.Dispose();
            }
            else
            {
                tbxValorTotal.Text = String.Empty;
            }

            //tbxQuantidade.Dispose();
            //tbxPreco.Dispose();
            //tbxValorTotal.Dispose();
        }


        protected void gvwItemCompraInsert_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("Excluir"))
            {
                TextBox tbxCodigo = (TextBox)fvwCompra.FindControl("tbxCodigoInsert");
                TextBox tbxValorTotalCompra = (TextBox)fvwCompra.FindControl("tbxValorTotalCompraInsert");
                Int32 codigoCompra = Convert.ToInt32(tbxCodigo.Text);
                Int32 codigoProduto = Convert.ToInt32(e.CommandArgument);
                compraFn.DeleteItemCompra(codigoCompra, codigoProduto);

                DataTable dt = new DataTable();
                dt = compraFn.ObterValorTotalCompra(Convert.ToInt32(tbxCodigo.Text));

                if (dt.Rows[0]["Valor"].ToString() != String.Empty)
                    tbxValorTotalCompra.Text = dt.Rows[0]["Valor"].ToString();
                else
                    tbxValorTotalCompra.Text = "0.00";

                GridView gvwItemProduto = (GridView)fvwCompra.FindControl("gvwItemCompraInsert");
                gvwItemProduto.DataBind();

                tbxValorTotalCompra.Dispose();
                tbxCodigo.Dispose();
                gvwItemProduto.Dispose();
            }
        }

        protected void btnLimparItemInsert_Click(object sender, EventArgs e)
        {
            TextBox tbxCodProduto = (TextBox)fvwCompra.FindControl("tbxCodigoProdutoInsert");
            TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeInsert");
            TextBox tbxPreco = (TextBox)fvwCompra.FindControl("tbxPrecoInsert");
            TextBox tbxValorTotal = (TextBox)fvwCompra.FindControl("tbxValorTotalInsert");
            TextBox tbxDescProduto = (TextBox)fvwCompra.FindControl("tbxDescricaoProdutoInsert");
            TextBox tbxUnidade = (TextBox)fvwCompra.FindControl("tbxUnidadeInsert");

            tbxCodProduto.Text = String.Empty;
            tbxQuantidade.Text = String.Empty;
            tbxPreco.Text = String.Empty;
            tbxValorTotal.Text = String.Empty;
            tbxDescProduto.Text = String.Empty;
            tbxUnidade.Text = String.Empty;

            tbxCodProduto.Dispose();
            tbxQuantidade.Dispose();
            tbxUnidade.Dispose();
            tbxValorTotal.Dispose();
            tbxDescricao.Dispose();
            tbxPreco.Dispose();

        }

        protected void gvwItemCompraUpdate_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            TextBox tbxCodigoUpdate = (TextBox)fvwCompra.FindControl("tbxCodigoUpdate");
            TextBox tbxValorTotalCompraUpdate = (TextBox)fvwCompra.FindControl("tbxValorTotalCompraUpdate");
            Int32 codigoCompra = Convert.ToInt32(tbxCodigoUpdate.Text);
            Int32 codigoProduto = Convert.ToInt32(e.CommandArgument);

            TextBox tbxCodigoProdutoUpdate = (TextBox)fvwCompra.FindControl("tbxCodigoProdutoUpdate");
            Button btnInserirItemUpdate = (Button)fvwCompra.FindControl("btnInserirItemUpdate");
            Button btnSalvarItemUpdate = (Button)fvwCompra.FindControl("btnSalvarItemUpdate");

            if (e.CommandName.Equals("Excluir"))
            {
                compraFn.DeleteItemCompra(codigoCompra, codigoProduto);
                tbxCodigoProdutoUpdate.Enabled = true;
                btnInserirItemUpdate.Visible = true;
                btnSalvarItemUpdate.Visible = false;
            }
            if (e.CommandName.Equals("Select"))
            {
                TextBox tbxDescricaoProdutoUpdate = (TextBox)fvwCompra.FindControl("tbxDescricaoProdutoUpdate");
                TextBox tbxUnidadeUpdate = (TextBox)fvwCompra.FindControl("tbxUnidadeUpdate");
                TextBox tbxQuantidadeUpdate = (TextBox)fvwCompra.FindControl("tbxQuantidadeUpdate");
                TextBox tbxPrecoUpdate = (TextBox)fvwCompra.FindControl("tbxPrecoUpdate");
                TextBox tbxCnpjFornecedorUpdate = (TextBox)fvwCompra.FindControl("tbxCnpjFornecedorUpdate");
                TextBox tbxValorTotalUpdate = (TextBox)fvwCompra.FindControl("tbxValorTotalUpdate");

                DataTable dtProduto = new DataTable();
                dtProduto = compraFn.ObterProduto(codigoProduto, compraFn.obterIdFornecedor(tbxCnpjFornecedorUpdate.Text));
                if (dtProduto.Rows.Count != 0)
                {
                    tbxCodigoProdutoUpdate.Text = e.CommandArgument.ToString();
                    tbxDescricaoProdutoUpdate.Text = dtProduto.Rows[0]["Descricao"].ToString();
                    tbxUnidadeUpdate.Text = dtProduto.Rows[0]["Unidade"].ToString();
                    tbxCodigoProdutoUpdate.Enabled = false;
                    btnInserirItemUpdate.Visible = false;
                    btnSalvarItemUpdate.Visible = true;
                }

                DataTable dtItemProduto = new DataTable();
                dtItemProduto = compraFn.ObterItemCompra(codigoProduto, codigoCompra);
                if (dtItemProduto.Rows.Count != 0)
                {
                    tbxQuantidadeUpdate.Text = dtItemProduto.Rows[0]["Quantidade"].ToString();
                    tbxPrecoUpdate.Text = dtItemProduto.Rows[0]["Preco"].ToString();
                    tbxValorTotalUpdate.Text = Convert.ToString(Multiplicar(Convert.ToInt32(tbxQuantidadeUpdate.Text), Convert.ToDecimal(tbxPrecoUpdate.Text)));
                }
            }

            DataTable dt = new DataTable();
            dt = compraFn.ObterValorTotalCompra(Convert.ToInt32(tbxCodigoUpdate.Text));

            if (dt.Rows[0]["Valor"].ToString() != String.Empty)
                tbxValorTotalCompraUpdate.Text = dt.Rows[0]["Valor"].ToString();
            else
                tbxValorTotalCompraUpdate.Text = "0.00";

            GridView gvwItemCompraUpdate = (GridView)fvwCompra.FindControl("gvwItemCompraUpdate");
            gvwItemCompraUpdate.DataBind();
            gvwItemCompraUpdate.Dispose();
            tbxValorTotalCompraUpdate.Dispose();
            tbxCodigoUpdate.Dispose();
        }

        protected void tbxQuantidadeUpdate_TextChanged(object sender, EventArgs e)
        {
            TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeUpdate");
            TextBox tbxPreco = (TextBox)fvwCompra.FindControl("tbxPrecoUpdate");
            TextBox tbxValorTotal = (TextBox)fvwCompra.FindControl("tbxValorTotalUpdate");
            if (!tbxQuantidade.Text.Equals(string.Empty) && !tbxPreco.Text.Equals(string.Empty) && !tbxQuantidade.Text.Contains("_") && !tbxPreco.Text.Contains("_"))
            {

                tbxValorTotal.Text = Convert.ToString(Multiplicar(Convert.ToInt32(tbxQuantidade.Text), Convert.ToDecimal(tbxPreco.Text)));
            }
            else
            {
                tbxValorTotal.Text = String.Empty;
            }
        }

        protected void tbxPrecoUpdate_TextChanged(object sender, EventArgs e)
        {
            TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeUpdate");
            TextBox tbxPreco = (TextBox)fvwCompra.FindControl("tbxPrecoUpdate");
            TextBox tbxValorTotal = (TextBox)fvwCompra.FindControl("tbxValorTotalUpdate");
            if (!tbxQuantidade.Text.Equals(string.Empty) && !tbxPreco.Text.Equals(string.Empty) && !tbxQuantidade.Text.Contains("_") && !tbxPreco.Text.Contains("_"))
            {
                tbxValorTotal.Text = Convert.ToString(Multiplicar(Convert.ToInt32(tbxQuantidade.Text), Convert.ToDecimal(tbxPreco.Text)));
            }
            else
            {
                tbxValorTotal.Text = String.Empty;
            }
        }

        protected void btnSalvarItemUpdate_Click(object sender, EventArgs e)
        {
            RequiredFieldValidator rfvCodigoProdutoUpdate = (RequiredFieldValidator)fvwCompra.FindControl("rfvCodigoProdutoUpdate");
            rfvCodigoProdutoUpdate.Validate();
            RequiredFieldValidator rfvQuantidadeUpdate = (RequiredFieldValidator)fvwCompra.FindControl("rfvQuantidadeUpdate");
            rfvQuantidadeUpdate.Validate();
            RequiredFieldValidator rfvPrecoUpdate = (RequiredFieldValidator)fvwCompra.FindControl("rfvPrecoUpdate");
            rfvPrecoUpdate.Validate();

            if (rfvCodigoProdutoUpdate.IsValid && rfvQuantidadeUpdate.IsValid && rfvPrecoUpdate.IsValid)
            {
                TextBox tbxCodigoProduto = (TextBox)fvwCompra.FindControl("tbxCodigoProdutoUpdate");
                TextBox tbxCodigoCompra = (TextBox)fvwCompra.FindControl("tbxCodigoUpdate");
                TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeUpdate");
                TextBox tbxPreco = (TextBox)fvwCompra.FindControl("tbxPrecoUpdate");
                TextBox tbxProduto = (TextBox)fvwCompra.FindControl("tbxDescricaoProdutoUpdate");
                TextBox tbxUnidade = (TextBox)fvwCompra.FindControl("tbxUnidadeUpdate");
                TextBox tbxValor = (TextBox)fvwCompra.FindControl("tbxValorTotalUpdate");
                TextBox tbxValorTotalCompra = (TextBox)fvwCompra.FindControl("tbxValorTotalCompraUpdate");
                GridView gvwItemProduto = (GridView)fvwCompra.FindControl("gvwItemCompraUpdate");

                Button btnInserirItemUpdate = (Button)fvwCompra.FindControl("btnInserirItemUpdate");
                Button btnSalvarItemUpdate = (Button)fvwCompra.FindControl("btnSalvarItemUpdate");

                btnSalvarItemUpdate.Visible = false;
                btnInserirItemUpdate.Visible = true;
                tbxCodigoProduto.Enabled = true;

                Int32 codigoProduto = Convert.ToInt32(tbxCodigoProduto.Text);
                Int32 codigoCompra = Convert.ToInt32(tbxCodigoCompra.Text);
                Int32 quantidade = Convert.ToInt32(tbxQuantidade.Text);
                Decimal preco = Convert.ToDecimal(tbxPreco.Text);

                bool sucesso = compraFn.UpdateItemCompra(codigoCompra, codigoProduto, quantidade, preco);

                if (sucesso)
                {
                    tbxCodigoProduto.Text = String.Empty;
                    tbxQuantidade.Text = String.Empty;
                    tbxPreco.Text = String.Empty;
                    tbxProduto.Text = String.Empty;
                    tbxUnidade.Text = String.Empty;
                    tbxValor.Text = String.Empty;

                    DataTable dt = new DataTable();
                    dt = compraFn.ObterValorTotalCompra(codigoCompra);

                    tbxValorTotalCompra.Text = dt.Rows[0]["Valor"].ToString();
                }

                gvwItemProduto.DataBind();
                tbxCodigoCompra.Dispose();
                tbxCodigoProduto.Dispose();
                tbxQuantidade.Dispose();
                tbxPreco.Dispose();
                tbxProduto.Dispose();
                tbxUnidade.Dispose();
                tbxValor.Dispose();
                gvwItemProduto.Dispose();
                tbxValorTotalCompra.Dispose();
            }
        }

        protected void btnLimparItemUpdate_Click(object sender, EventArgs e)
        {
            TextBox tbxCodProduto = (TextBox)fvwCompra.FindControl("tbxCodigoProdutoUpdate");
            TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeUpdate");
            TextBox tbxPreco = (TextBox)fvwCompra.FindControl("tbxPrecoUpdate");
            TextBox tbxValorTotal = (TextBox)fvwCompra.FindControl("tbxValorTotalUpdate");
            TextBox tbxDescProduto = (TextBox)fvwCompra.FindControl("tbxDescricaoProdutoUpdate");
            TextBox tbxUnidade = (TextBox)fvwCompra.FindControl("tbxUnidadeUpdate");

            Button btnInserirItemUpdate = (Button)fvwCompra.FindControl("btnInserirItemUpdate");
            Button btnSalvarItemUpdate = (Button)fvwCompra.FindControl("btnSalvarItemUpdate");

            if (btnInserirItemUpdate.Visible)
            {

                tbxCodProduto.Text = String.Empty;
                tbxQuantidade.Text = String.Empty;
                tbxPreco.Text = String.Empty;
                tbxValorTotal.Text = String.Empty;
                tbxDescProduto.Text = String.Empty;
                tbxUnidade.Text = String.Empty;
            }
            else
                if (btnSalvarItemUpdate.Visible)
                {
                    tbxQuantidade.Text = String.Empty;
                    tbxPreco.Text = String.Empty;
                }

            tbxCodProduto.Dispose();
            tbxQuantidade.Dispose();
            tbxUnidade.Dispose();
            tbxValorTotal.Dispose();
            tbxDescricao.Dispose();
            tbxPreco.Dispose();
        }

        protected void btnSalvarCompraUpdate_Click(object sender, EventArgs e)
        {
            RequiredFieldValidator rfvDataUpdate = (RequiredFieldValidator)fvwCompra.FindControl("rfvDataUpdate");
            rfvDataUpdate.Validate();
            RequiredFieldValidator rfvNumeroNotaPedidoUpdate = (RequiredFieldValidator)fvwCompra.FindControl("rfvNumeroNotaPedidoUpdate");
            rfvNumeroNotaPedidoUpdate.Validate();

            if (rfvDataUpdate.IsValid && rfvNumeroNotaPedidoUpdate.IsValid)
            {
                TextBox tbxNumeroNotaPedidoUpdate = (TextBox)fvwCompra.FindControl("tbxNumeroNotaPedidoUpdate");
                TextBox tbxDataUpdate = (TextBox)fvwCompra.FindControl("tbxDataUpdate");
                TextBox tbxCodigoCompra = (TextBox)fvwCompra.FindControl("tbxCodigoUpdate");
                Button btnLimparCompraUpdate = (Button)fvwCompra.FindControl("btnLimparCompraUpdate");
                Button btnSalvarCompraUpdate = (Button)fvwCompra.FindControl("btnSalvarCompraUpdate");

                bool sucesso = compraFn.UpdateCompra(Convert.ToInt32(tbxCodigoCompra.Text), Convert.ToInt32(tbxNumeroNotaPedidoUpdate.Text), Convert.ToDateTime(tbxDataUpdate.Text));

                if (sucesso)
                {
                    tbxNumeroNotaPedidoUpdate.Enabled = false;
                    tbxDataUpdate.Enabled = false;
                    btnLimparCompraUpdate.Visible = false;
                    btnSalvarCompraUpdate.Visible = false;
                }
            }
        }

        protected void btnLimparCompraUpdate_Click(object sender, EventArgs e)
        {
            TextBox tbxNumeroNotaPedidoUpdate = (TextBox)fvwCompra.FindControl("tbxNumeroNotaPedidoUpdate");
            TextBox tbxDataUpdate = (TextBox)fvwCompra.FindControl("tbxDataUpdate");

            tbxNumeroNotaPedidoUpdate.Text = String.Empty;
            tbxDataUpdate.Text = String.Empty;

            tbxDataUpdate.Dispose();
            tbxNumeroNotaPedidoUpdate.Dispose();

        }

        protected void btnInserirItemUpdate_Click(object sender, EventArgs e)
        {
            RequiredFieldValidator rfvCodigoProdutoUpdate = (RequiredFieldValidator)fvwCompra.FindControl("rfvCodigoProdutoUpdate");
            rfvCodigoProdutoUpdate.Validate();
            RequiredFieldValidator rfvQuantidadeUpdate = (RequiredFieldValidator)fvwCompra.FindControl("rfvQuantidadeUpdate");
            rfvQuantidadeUpdate.Validate();
            RequiredFieldValidator rfvPrecoUpdate = (RequiredFieldValidator)fvwCompra.FindControl("rfvPrecoUpdate");
            rfvPrecoUpdate.Validate();

            if (rfvCodigoProdutoUpdate.IsValid && rfvQuantidadeUpdate.IsValid && rfvPrecoUpdate.IsValid)
            {
                TextBox tbxCodigoProduto = (TextBox)fvwCompra.FindControl("tbxCodigoProdutoUpdate");
                TextBox tbxCodigoCompra = (TextBox)fvwCompra.FindControl("tbxCodigoUpdate");
                TextBox tbxQuantidade = (TextBox)fvwCompra.FindControl("tbxQuantidadeUpdate");
                TextBox tbxPreco = (TextBox)fvwCompra.FindControl("tbxPrecoUpdate");
                TextBox tbxProduto = (TextBox)fvwCompra.FindControl("tbxDescricaoProdutoUpdate");
                TextBox tbxUnidade = (TextBox)fvwCompra.FindControl("tbxUnidadeUpdate");
                TextBox tbxValor = (TextBox)fvwCompra.FindControl("tbxValorTotalUpdate");
                TextBox tbxValorTotalCompra = (TextBox)fvwCompra.FindControl("tbxValorTotalCompraUpdate");
                GridView gvwItemProduto = (GridView)fvwCompra.FindControl("gvwItemCompraUpdate");

                Int32 codigoProduto = Convert.ToInt32(tbxCodigoProduto.Text);
                Int32 codigoCompra = Convert.ToInt32(tbxCodigoCompra.Text);
                Int32 quantidade = Convert.ToInt32(tbxQuantidade.Text);
                Decimal preco = Convert.ToDecimal(tbxPreco.Text);

                Int32 sucesso = compraFn.InserirItemCompra(codigoProduto, codigoCompra, quantidade, preco);

                if (sucesso != -1)
                {
                    tbxCodigoProduto.Text = String.Empty;
                    tbxQuantidade.Text = String.Empty;
                    tbxPreco.Text = String.Empty;
                    tbxProduto.Text = String.Empty;
                    tbxUnidade.Text = String.Empty;
                    tbxValor.Text = String.Empty;

                    DataTable dt = new DataTable();
                    dt = compraFn.ObterValorTotalCompra(Convert.ToInt32(tbxCodigoCompra.Text));

                    tbxValorTotalCompra.Text = dt.Rows[0]["Valor"].ToString();
                }

                gvwItemProduto.DataBind();
                tbxCodigoCompra.Dispose();
                tbxCodigoProduto.Dispose();
                tbxQuantidade.Dispose();
                tbxPreco.Dispose();
                tbxProduto.Dispose();
                tbxUnidade.Dispose();
                tbxValor.Dispose();
                gvwItemProduto.Dispose();
                tbxValorTotalCompra.Dispose();
            }

        }

        protected void tbxCodigoProdutoUpdate_TextChanged(object sender, EventArgs e)
        {
            TextBox tbxCodProduto = (TextBox)fvwCompra.FindControl("tbxCodigoProdutoUpdate");
            TextBox tbxDescProduto = (TextBox)fvwCompra.FindControl("tbxDescricaoProdutoUpdate");
            TextBox tbxUnidade = (TextBox)fvwCompra.FindControl("tbxUnidadeupdate");
            TextBox tbxCnpj = (TextBox)fvwCompra.FindControl("tbxCnpjFornecedorUpdate");

            if (!tbxCodProduto.Text.Equals(String.Empty))
            {
                DataTable dt = new DataTable();
                CompraFn compraFn = new CompraFn();
                dt = compraFn.ObterProduto(Convert.ToInt32(tbxCodProduto.Text), compraFn.obterIdFornecedor(tbxCnpj.Text));

                if (dt.Rows.Count != 0)
                {
                    tbxDescProduto.Text = dt.Rows[0]["Descricao"].ToString();
                    tbxUnidade.Text = dt.Rows[0]["Unidade"].ToString();
                }
                else
                {
                    tbxDescProduto.Text = String.Empty;
                    tbxUnidade.Text = string.Empty;
                    MessageBox.Show("Código de produto " + tbxCodProduto.Text + " invalido!", MessageBox.MessageType.Warning);
                    tbxCodProduto.Text = String.Empty;
                }
            }
            else
            {
                tbxDescProduto.Text = String.Empty;
                tbxUnidade.Text = String.Empty;
            }
        }
    }
}